shop.cart = {
//	--------------------------------- config -------------------------------- //
	conf:{
		extra:{},
		user:{fullname:'',email:'',mobile_phone:'',type:'guest',address:'',city:0,district:'',note:''},
		customer:{},
		userInfo:1,
		userAddress:1,
		cart:null,
		loto:false,
		card:[50000,100000,200000,300000,500000],
		card_rate: 9/10,
		shipping:{active:false, COD:false, fee:0, fee_f:'0 đ', note:'', check: false, code:'SHIP', codNote: '', codShipType:'card'},
		province: 0
	},

//	--------------------------------- main action -------------------------------- //
	addItem: function (id, start, end, buyer, buyer_need, type, extra) {
		var msg = '';
		if(buyer >= buyer_need){
			msg = '<span style="font-size:14px;color:red">Rất tiếc! Sản phẩm đã được mua hết<br />Xin Quý khách vui lòng chọn sản phẩm khác.</span>';
		}else if(end < TIME_NOW){
			msg = '<span style="font-size:14px;color:red">Rất tiếc! Đã quá thời hạn bán sản phẩm.<br />Xin Quý khách vui lòng chọn sản phẩm khác.</span>';
		}else if(start > TIME_NOW){
			var d = new Date(start*1000),
				hour= d.getHours(),
				min = d.getMinutes(),
				day = d.getDate(),
				month = d.getMonth()+1;
			msg = '<span style="font-size:14px;color:red">Rất tiếc! Chưa đến thời hạn bán sản phẩm.<br />Sản phẩm sẽ được bán vào lúc</span> <b style="font-size:16px">'+((hour>9?'':'0')+(hour>0?hour:0)+'h'+(min>9?'':'0')+(min>0?min:0)+' ngày '+(day>9?'':'0')+(day>0?day:0)+'/'+(month>9?'':'0')+(month>0?month:0)+'/'+d.getFullYear())+'</b>';
		}
		if(msg != ''){
			shop.cart.theme.systemAlert(msg);
		}else{
			if(shop.cart.isMultiPrice(id)){
				shop.cart.showExtra(id, shop.cart.conf.extra[id]);
			}else{
				shop.cart.doAddItem(id, type);
			}
		}
	},
	doAddItem:function(id, type, idx){
		shop.cart.guest.restore();
		shop.ajax_popup("act=cart&code=order",'POST',{id: id, number: 1, extra: idx},
		function(json){
			if(json.err == 0){
				//check loto
				shop.cart.conf.loto = json.order.cart.is_loto == 1;
				shop.cart.conf.province = json.order.cart.province_id;
				if(shop.cart.conf.loto && json.user.type != 'customer'){
					shop.cart.theme.systemAlert(shop.join
					('<span style="font-size:14px;color:red">')
						('Rất tiếc! Bạn phải ')
						('<a href="javascript:void(0)" onclick="shop.customer.login.show()">Đăng nhập</a>')
						(' hoặc <a href="javascript:void(0)" onclick="shop.customer.register.show()">Đăng ký</a>')
						(' để tham gia hoạt động quay số trúng thưởng')
					('</span>')());
				}else{
					shop.cart.conf.shipping = {
						fee: parseInt(json.order.cart.fee_shipping),
						fee_f: json.order.cart.fee_shipping_f,
						code:'SHIP',
						note: json.order.cart.note,
						active: false,
						COD: true,
						check: false,
						codShipType: '',
						codNote: json.order.cart.note_cod
					};
					shop.cart.conf.shipping.active = (shop.cart.conf.shipping.fee >= 0) && (shop.cart.conf.shipping.note != '');
					shop.cart.conf.cart = json.order;
					
					//cap nhat lai thong tin nguoi mua hang
					shop.cart.guest.update(json.user);
					if(json.user.type == 'customer'){
						shop.cart.conf.customer = json.user;
						shop.cart.conf.customer.gold = parseInt(shop.cart.conf.customer.gold);
						shop.cart.conf.card_rate = json.card_rate;
					}
					if((type == 'visa') ||
					   (type == 'atmOnline') ||
					   (type == 'cod' && shop.cart.isCOD()) ||
					   (type == 'mcard' && shop.cart.isGOLD())
					){
						shop.cart.conf.cart.payment_id = type;
					}
					shop.cart.stepZero();
				}
			}else{
				switch(json.msg){
					case 'full':
						shop.cart.theme.systemAlert('<span style="font-size:14px;color:red">Rất tiếc! Sản phẩm đã được mua hết hoặc thời hạn bán sản phẩm không hợp lệ.<br />Xin Quý khách vui lòng chọn sản phẩm khác.</span>');
					break;
					case 'miss':
						if(shop.is_exists(json.miss.phone)){
							miss += '<br /><b>- Số điện thoại</b>';
						}
						shop.cart.theme.systemAlert('<span style="font-size:14px"><span style="color:red">Rất tiếc! Quý khách chưa điền đủ thông tin cá nhân nên không thể tiếp tục mua hàng.</span><br /><br />Xin Quý khách vui lòng vào <a href="'+json.link_profile+'">sửa thông tin cá nhân</a> và bổ sung thêm: '+miss+'</span>');
					break;
					case 'loto_overflow':
						shop.cart.theme.systemAlert('<span style="font-size:14px"><span style="color:red">Rất tiếc! Quý khách đã mua đủ số lượng vé số.</span></span>');
					break;
				}
			}
		});
	},

//	--------------------------------- showing popup -------------------------------- //

	showExtra:function(id, extra){
		shop.show_overlay_popup('cart-extra','Chọn mua',
		shop.cart.theme.extra('cart-extra','Chọn mua',extra,id),
		{
			background: {
				'background-color' : 'transparent'
			},
			border: {
				'background-color' : 'transparent',
				'padding' : '0px'
			},
			title: {
				'display' : 'none'
			},
			content: {
				'padding' : '0px',
				'width'   : '650px',
				'font-size': '12px'
			}
		});
	},
	stepZero:function(){
		shop.show_overlay_popup('cart-regulations','Chọn hình thức thanh toán',
		shop.cart.theme.regulations('cart-regulations','Chọn hình thức thanh toán'),
		{
			background: {
				'background-color' : 'transparent'
			},
			border: {
				'background-color' : 'transparent',
				'padding' : '0px'
			},
			title: {
				'display' : 'none'
			},
			content: {
				'padding' : '0px',
				'width'   : '710px',
				'height'  : '900px',
				'font-size': '12px'
			},
			release: function(){
				jQuery('.paymentChooseType').click(function(){shop.cart.choosePayment(this)})
				.hover(
					function(){
						if(!jQuery(this).hasClass(this.id+'NoActive')){
							jQuery('.pay_active').removeClass('pay_active');
							jQuery(this).addClass('pay_active');
							jQuery('.clicked').addClass('pay_active');
						}
					},
					function(){
						if(!jQuery(this).hasClass(this.id+'NoActive')){
							jQuery('.pay_active').removeClass('pay_active');
							jQuery('.clicked').addClass('pay_active');
						}
					}
				);
			}
		});
	},
	stepOne:function(){
		var tpl = shop.cart.theme.register('cart-check-out-step1', 'Nhập thông tin cá nhân');
		if(tpl != ''){
			shop.show_overlay_popup('cart-check-out-step1', 'Nhập thông tin cá nhân',
			tpl,
			{
				background: {
					'background-color' : 'transparent'
				},
				border: {
					'background-color' : 'transparent',
					'padding' : '0px'
				},
				title: {
					'display' : 'none'
				},
				content: {
					'padding' : '0px',
					'width' : '655px',
					'font-size': '12px'
				},
				release:function(){
					jQuery('#formQuantity').jNice();
				}
			});
		}
	},
	stepTwo:function(back){
		var show_form_address = (shop.cart.conf.cart.payment_id == 'cod') ||
								(shop.cart.conf.shipping.check && shop.cart.conf.shipping.active) ||
								(shop.cart.conf.province == 0);
		if( show_form_address ){
			var district = (shop.cart.conf.user.type == 'customer' && shop.cart.conf.userAddress == 1) ? shop.cart.conf.customer.district : shop.cart.conf.user.district;
			shop.show_overlay_popup('cart-check-out-step2', 'Thông tin giao hàng',
			shop.cart.theme.moreInfo('cart-check-out-step2', 'Thông tin giao hàng', district),
			{
				background: {
					'background-color' : 'transparent'
				},
				border: {
					'background-color' : 'transparent',
					'padding' : '0px'
				},
				title: {
					'display' : 'none'
				},
				content: {
					'padding' : '0px',
					'width' : '415px',
					'font-size': '12px'
				},
				release:function(){
					shop.district.loadDistrictDropdown(shop.cart.conf.user.city, 'listDistrict', false, shop.cart.conf.user.district);
				}
			});
		}else{
			if(back){
				shop.cart.stepOne();
			}
			else{
				shop.cart.stepThree();
			}
		}
	},
	stepThree: function(){
		shop.show_overlay_popup('cart-confirm','Thanh Toán',
		shop.cart.theme.confirmProduct('cart-confirm','Thanh Toán'),
		{
			background: {
				'background-color' : 'transparent'
			},
			border: {
				'background-color' : 'transparent',
				'padding' : '0px'
			},
			title: {
				'display' : 'none'
			},
			content: {
				'padding' : '0px',
				'width' : '815px',
				'font-size': '12px'
			}
		});
	},
	stepFinish: function(){
		shop.show_overlay_popup('cart-step-finish','Cám ơn Quý khách đã mua hàng',
		shop.cart.theme.finish('cart-step-finish','Cám ơn Quý khách đã mua hàng'),
		{
			background: {
				'background-color' : 'transparent'
			},
			border: {
				'background-color' : 'transparent',
				'padding' : '0px'
			},
			title: {
				'display' : 'none'
			},
			content: {
				'padding' : '0px',
				'width' : '415px',
				'font-size': '12px'
			}
		});
	},

//	--------------------------------- process cart -------------------------------- //

	processExtra:function(id, idx){
		if(shop.cart.isMultiPrice(id)){
			shop.cart.doAddItem(id, '', idx);
		}
	},
	processStepZero:function(){
		if(!jQuery('.paymentChooseType').hasClass('clicked')){
			alert('Quý khách chưa chọn hình thức thanh toán');
			return;
		}
		shop.cart.conf.cart.payment_id = jQuery('.clicked').attr('id');
		if(shop.cart.conf.cart.payment_id=='visa' || shop.cart.conf.cart.payment_id=='atmOnline'){
			shop.cart.conf.cart.payment = 1;
		}else if(shop.cart.conf.cart.payment_id=='mcard'){
			shop.cart.conf.cart.payment = 2;
			if(shop.cart.conf.customer.active == 0){
				alert('Quý khách vui lòng kích hoạt Email trước khi chọn mua hàng bằng Ví MuaChung');
				shop.hide_overlay_popup('cart-regulations');
				shop.customer.register.sendActiveEmail(shop.cart.conf.customer.email, 1);
				return;
			}
		}else{
			shop.cart.conf.cart.payment = 0;
		}
		
		shop.cart.stepOne();
	},
	processStepOne:function(){
		var frm = document.cartRegisterForm, fname = '',tel   = '',email = '';
		if(shop.cart.conf.user.type == 'customer' && shop.cart.conf.userInfo == 1){
			fname = shop.cart.conf.customer.fullname;
			tel = shop.cart.conf.customer.mobile_phone;
			email = shop.cart.conf.customer.email;
		}else{
			if(frm.cart_fullname){
				fname = shop.util_trim(frm.cart_fullname.value);
				if(fname == ''){
					shop.error.set('#'+frm.cart_fullname.id, 'Chưa nhập họ tên', 430, '.reg_cart_form');
					return;
				}else if(fname.length < 3){
					shop.error.set('#'+frm.cart_fullname.id, 'Họ tên tối thiểu là 3 kí tự', 430, '.reg_cart_form');
					return;
				}
				else if(fname.match(/[',",>,<,=,&,?,!,~,%,+,{,},\[,\],|,`,(,),@,#,$,^,*,-,\/,\\,\,]/i) != null){
					shop.error.set('#'+frm.cart_fullname.id, 'Họ tên không chứa các kí tự đặc biệt', 430, '.reg_cart_form');
					return;
				}
				else{
					shop.error.close('#'+frm.cart_fullname.id, '.reg_cart_form');
				}
			}

			if(frm.cart_tel){
				tel = shop.util_trim(frm.cart_tel.value);
				if(tel == ''){
					shop.error.set('#'+frm.cart_tel.id, 'Chưa nhập Số điện thoại', 430, '.reg_cart_form');
					return;
				}
				else{
					shop.error.close('#'+frm.cart_tel.id, '.reg_cart_form');
				}
			}

			if(frm.cart_email){
				email = shop.util_trim(frm.cart_email.value);
				if(email == ''){
					shop.error.set('#'+frm.cart_email.id, 'Chưa nhập địa chỉ email', 430, '.reg_cart_form');
					return;
				}else if(!shop.is_email(email)){
					shop.error.set('#'+frm.cart_email.id, 'Địa chỉ email không hợp lệ', 430, '.reg_cart_form');
					return;
				}
				else{
					shop.error.close('#'+frm.cart_email.id, '.reg_cart_form');
				}
			}
		}

		var shipping = shop.cart.conf.shipping.fee;
			shop.cart.conf.shipping.code = "SHIP";
			if(shop.get_ele('shipping-check')){
				shop.cart.conf.shipping.check = shop.get_ele('shipping-check').checked;
			}else{
				shop.cart.conf.shipping.check = false;
			}
		
		shop.ajax_popup('act=cart&code=register',"POST",{
			email: email, tel: tel, fullname: fname, address:'',
			pay_id: shop.cart.conf.cart.payment_id,
			shipping: shop.cart.conf.shipping.check ? shipping : -1,
			ship_active: (shop.cart.conf.shipping.active || shop.cart.conf.shipping.COD) ? 1 : 0,
			ship_code: shop.cart.conf.shipping.code,
			quantity: shop.cart.conf.cart.numberOtp,
			item_id: shop.cart.conf.cart.cart.id
		},
		function (j) {
			if (j.err == 0) {
				shop.hide_overlay_popup('cart-check-out-step1');
				//update cart
				shop.cart.conf.cart.total = parseInt(j.total);
				shop.cart.conf.cart.total_price = j.total_price;
				shop.cart.conf.cart.cart.shipping_fee_f = j.total_ship;
				shop.cart.conf.cart.cart.price_total_f = j.total_price_noship;
				//update user info
				shop.cart.conf.user.email = j.email;
				shop.cart.conf.user.fullname = j.fullname;
				shop.cart.conf.user.mobile_phone = j.mobile_phone;

				//save user info by cookie
				shop.cart.guest.save(j);
				shop.cart.stepTwo();
			} else {
				switch(j.msg){
					case 'email':shop.error.set('#cart_'+j.msg, 'Email đã được sử dụng', 430, '.reg_cart_form');break;
					case 'empty_mail':shop.error.set('#cart_'+j.msg, 'Chưa nhập địa chỉ email', 430, '.reg_cart_form');break;
					case 'invalid_min':shop.error.set('', 'Bạn phải mua tối thiểu '+shop.cart.conf.cart.cart.min_order+' sản phẩm', 430, '.reg_cart_form');break;
					case 'invalid_quantity':
						j.msg = 'Sản phẩm đã bán hết';
						if(j.quantity > 0){
							j.msg = 'Chỉ còn '+j.quantity+' sản phẩm';
						}
						shop.error.set('', j.msg, 430, '.reg_cart_form');
					break;
					case 'loto_overflow':
						j.msg = 'Quý khách đã mua <b>'+j.loto_now+'</b> vé số. Do đó Quý khách chỉ được mua thêm <b>'+j.loto_valid+'</b> vé số.';
						shop.error.set('', j.msg, 520, '.reg_cart_form');
					break;
				}
			}
		});
	},
	processStepTwo:function(back){
		var frm = document.cartAddressForm;
		if(shop.cart.conf.user.type == 'customer' && shop.cart.conf.userAddress == 1){
			var note = shop.util_trim(frm.cart_note2.value);
			if(note.match(/[<>]/i) != null){
				shop.error.set('#'+frm.cart_note2.id, 'Kí tự "<" & ">" không hợp lệ, vui lòng nhập lại', 320, '.cartMoreAddress');
				return;
			}
			shop.cart.conf.user.address = shop.cart.conf.customer.address;
			shop.cart.conf.user.city = shop.cart.conf.customer.city;
			shop.cart.conf.user.district = shop.cart.conf.customer.district;
			shop.cart.conf.user.note = note;
		}
		else{
			var address = '', city = 0, district = '', street = '', ward = '';
			if(frm.cart_address){
				address = shop.util_trim(frm.cart_address.value);
				if(address == ''){
					shop.error.set('#'+frm.cart_address.id, 'Chưa nhập Số nhà', 320, '.cartMoreAddress'); return;
				}else if(address.match(/[<>]/i) != null){
					alert(address.match(/[<>]/i));
					shop.error.set('#'+frm.cart_address.id, 'Kí tự "<" & ">" không hợp lệ, vui lòng nhập lại', 320, '.cartMoreAddress');
					return;
				}else{
					shop.error.close('#'+frm.cart_address.id, '.cartMoreAddress');
				}
			}
			if(frm.cart_street){
				street = shop.util_trim(frm.cart_street.value);
				if(street == ''){
					shop.error.set('#'+frm.cart_street.id, 'Chưa nhập Đường/Phố', 320, '.cartMoreAddress'); return;
				}else if(street.match(/[<>]/i) != null){
					alert(street.match(/[<>]/i));
					shop.error.set('#'+frm.cart_street.id, 'Kí tự "<" & ">" không hợp lệ, vui lòng nhập lại', 320, '.cartMoreAddress');
					return;
				}else{
					shop.error.close('#'+frm.cart_street.id, '.cartMoreAddress');
				}
			}
			if(frm.cart_ward){
				ward = shop.util_trim(frm.cart_ward.value);
				if(ward == ''){
					shop.error.set('#'+frm.cart_ward.id, 'Chưa nhập Phường/Xã', 320, '.cartMoreAddress'); return;
				}else if(ward.match(/[<>]/i) != null){
					alert(ward.match(/[<>]/i));
					shop.error.set('#'+frm.cart_ward.id, 'Kí tự "<" & ">" không hợp lệ, vui lòng nhập lại', 320, '.cartMoreAddress');return;
				}else{
					shop.error.close('#'+frm.cart_ward.id, '.cartMoreAddress');
				}
			}
			if(frm.district){
				district = shop.util_trim(frm.district.value);
				if(district == ''){
					shop.error.set('#'+frm.district.id, 'Chưa nhập Quận/Huyện', 320, '.cartMoreAddress');return;
				}else{
					shop.error.close('#'+frm.district.id, '.cartMoreAddress');
				}
			}
			if(frm.cart_city){
				city = parseInt(frm.cart_city.value);
				if(city <= 0){
					shop.error.set('#'+frm.cart_city.id, 'Chưa chọn tỉnh thành', 320, '.cartMoreAddress');
					return;
				}else{
					shop.error.close('#'+frm.cart_city.id, '.cartMoreAddress');
				}
			}
			var note = shop.util_trim(frm.cart_note.value);
			if(note.match(/[<>]/i) != null){
				shop.error.set('#'+frm.cart_note.id, 'Kí tự "<" & ">" không hợp lệ, vui lòng nhập lại', 320, '.cartMoreAddress');
				return;
			}
			shop.cart.conf.user.address = address;
			shop.cart.conf.user.street = street;
			shop.cart.conf.user.ward = ward;
			shop.cart.conf.user.city = city;
			shop.cart.conf.user.district = frm.district.options[frm.district.selectedIndex].innerHTML;
			shop.cart.conf.user.note = note;
		}
		shop.cart.guest.save(shop.cart.conf.user);
		shop.cart.stepThree();
	},
	processStepThree:function(){
		var post, card = shop.cart.conf.cart.payment, note =  '', city = 0, street = '', ward = '', district = '', address = '', g_note = '';

		if(shop.cart.conf.user.type == 'guest' && !shop.get_ele('check-regulations').checked){
			alert('Quý khách chưa tích vào mục đã đọc và đồng ý các điều khoản và quy định của MuaChung.vn');
			return;
		}

		if((shop.cart.conf.province == 0) || (shop.cart.conf.cart.payment_id == 'cod') || (shop.cart.conf.shipping.check && shop.cart.conf.shipping.active)){
			city = shop.cart.conf.user.city;
			district = shop.cart.conf.user.district;
			address = shop.cart.conf.user.address;
			street = shop.cart.conf.user.street;
			ward = shop.cart.conf.user.ward;
			g_note = shop.cart.conf.user.note;
			
			if(city == 0 || district == '' || address == ''){
				alert('Vui lòng kiểm tra lại thông tin giao hàng.\nHiện tại đang thiếu thông tin: '+(address==''?' Địa chỉ.':'')+(district==''?' Quận/Huyện/Phường.':'')+(city<=0?' Tỉnh/Thành phố.':''));
				return;
			}
		}

		if(shop.cart.conf.cart.payment_id == 'cod'){
			note = 'Ch%E1%BB%8Dn+h%C3%ACnh+th%E1%BB%A9c+chuy%E1%BB%83n+';
			if(shop.cart.conf.shipping.codShipType != 'card'){
				note += 's%E1%BA%A3n+ph%E1%BA%A9m';
			}else{
				note += 'th%E1%BA%BB+c%C3%A0o';
			}
		}

		post = {
			item_id: shop.cart.conf.cart.cart.id,
			paymentType: card,
			adminNote:note,
			quantity:shop.cart.conf.cart.numberOtp,
			city: city,
			district: district,
			address: address,
			street: street,
			ward: ward,
			note: g_note,
			shipping: shop.cart.conf.shipping.check ? shop.cart.conf.shipping.fee : -1,
			ship_active: (shop.cart.conf.shipping.active || shop.cart.conf.shipping.COD) ? 1 : 0,
			ship_code: shop.cart.conf.shipping.code,
			codShipType: shop.cart.conf.shipping.codShipType
		};
		//submit
		shop.cart.finishSubmit(post);
	},
	finishSubmit:function(post){
		shop.ajax_popup('act=cart&code=finish',"POST",post,
		function(j){
			if(j.err == 0)	{
				shop.cart.conf.cart.payment == 2
				switch(post.paymentType){
					case 0:
						shop.cart.stepFinish();
						shop.redirect(j.url);
						break;
					case 1:
						shop.cart.conf.cart = j;
						jQuery('body').append(shop.cart.theme.paymentViSa());
						jQuery('#checkoutSoHa').submit();
						break;
					case 2:
						if(shop.is_exists(j.more_gold)){
							shop.cart.conf.card_post = post;
							shop.cart.conf.customer.gold = j.gold;
							shop.cart.conf.customer.more_gold = j.more_gold;
							shop.cart.conf.cart.total = j.total;
						}else{
							shop.cart.stepFinish();
							shop.redirect(j.url);
						}
						break;
				}
			}else{
				switch(j.msg){
					case 'invalid_min': j.msg = 'Bạn phải mua tối thiểu '+shop.cart.conf.cart.cart.min_order+' sản phẩm'; break;
					case 'invalid_quantity':
						j.msg = 'Sản phẩm đã bán hết';
						if(j.quantity > 0){
							j.msg = 'Chỉ còn '+j.quantity+' sản phẩm';
						}
					break;
					case 'cus_not_found': j.msg = 'Hiện tại bạn đang không đăng nhập.<br />Vui lòng tắt cửa sổ, mua lại'; break;
					case 'loto_overflow':
						j.msg = 'Quý khách đã mua '+j.loto_now+' vé số.<br />Do đó Quý khách chỉ được mua thêm '+j.loto_valid+' vé số';
					break;
				}
				shop.show_popup_message(j.msg,'Thông báo lỗi',-1);
			}
		});
	},

//	--------------------------------- cart theme -------------------------------- //

	theme:{
		extra:function(id, title, extra, item_id){
			if(extra){
				var extra_html = '';
				for(var i=0;i<extra.length;i++){
					extra_html += shop.join
					('<div class="'+(i%2==0?'bgBuyPop':'bgBuyPopOdd')+'">')
						('<div class="contentBuyPop fl">')
							('<div class="newTitle">'+extra[i].price_title+'</div>')
							('<div class="detailBuyPop">Giá gốc <b>'+shop.numberFormat(extra[i].price, 0, '', '.')+'đ</b> - Giảm <strong>'+shop.numberFormat(extra[i].price_promotion, 0, '', '.')+'%</strong> - Tiết kiệm <strong>'+shop.numberFormat(extra[i].price_save_money, 0, '', '.')+'đ</strong></div>')
						('</div>')
						('<div class="fr">')
							('<a href="javascript:void(0)" class="buyPopBlock" onclick="shop.cart.processExtra('+item_id+','+i+')"><span><span>Giá <b>'+shop.numberFormat(extra[i].price_save, 0, '', '.')+'đ</b></span></span></a>')
							('<div class="c"></div>')
						('</div>')
						('<div class="c"></div>')
					('</div>')();
				}
				return shop.popupSite(id, title, '<div class="content" style="padding:20px">'+extra_html+'</div>');
			}
			return '';
		},
		regulations:function(id, title){
			var cod_title = shop.cart.conf.loto ? '' : '<span>(Miễn phí giao Phiếu, Không tặng tiền)</span>',
			type = shop.is_exists(shop.cart.conf.cart.payment_id)?shop.cart.conf.cart.payment_id:'',
			item_id = shop.cart.conf.cart.cart.id,
			notActive = '<div class="notActive"></div>',
			gold_reward = shop.cart.conf.cart.cart.startTime < 1317315600 ? (1000+parseInt(shop.cart.conf.cart.cart.price)/100) : (parseInt(shop.cart.conf.cart.cart.price)/100),
			gold_f = shop.numberFormat(gold_reward , 0, '', '.'),
			title_gold = shop.cart.conf.loto ? '' : '<span>(Được tặng '+gold_f+' đ/'+shop.cart.conf.cart.cart.unit+' vào Ví MuaChung)</span>',
			visaCard = shop.join
			('<div class="paymentChooseType sendOnline'+(type=='visa'?' pay_active clicked':'')+(shop.cart.conf.loto?' visaNoActive':'')+'" id="visa">')
				('<div class="arrowRight">')
					('<div class="radioBox"><input type="radio" name="radio_pay" id="radio_visa" value="visa" '+(type=='visa'?'checked':'')+' /></div>')
					('<div class="paymentContent">')
						('<div class="paymentTitle">Thanh toán bằng thẻ Visa hoặc MasterCard '+title_gold+'</div>')
						('<div class="paymentText">Thanh toán nhanh gọn và có thể mua hàng hoặc sử dụng ngay dịch vụ sau khi thanh toán.</div>')
						('<div class="creditPay bankPay">')
							('<span id="visa"></span>')
							('<span id="master"></span>')
							('<div class="c"></div>')
						('</div>')
					('</div>')
					('<div class="c"></div>')
					('<ul class="paymentText paymentGuide'+(type=='visa' ? '' : ' hidden')+'">')
						('<li>Không mất phí thanh toán</li>')
						('<li>Thanh toán nhanh gọn và có thể sử dụng dịch vụ ngay sau khi thanh toán.</li>')
					('</ul>')
				('</div>')
			('</div>')(),
			atmOnline = shop.join
			('<div class="paymentChooseType amtOnline'+(type=='atmOnline'?' pay_active clicked':'')+(shop.cart.conf.loto?' atmOnlineNoActive':'')+'" id="atmOnline">')
				('<div class="arrowRight">')
					('<div class="radioBox"><input type="radio" name="radio_pay" id="radio_atmOnline" value="atmOnline" '+(type=='atmOnline'?'checked':'')+' /></div>')
					('<div class="paymentContent">')
						('<div class="paymentTitle">Chuyển khoản Online '+title_gold+'</div>')
						('<div class="paymentText">Thanh toán nhanh gọn và có thể mua hàng hoặc sử dụng ngay dịch vụ sau khi thanh toán.</div>')
						('<div class="creditPay bankPay">')
							('<a class="fl" href="javascript:void(0)"><span id="vcb"></span></a>')
							('<a class="fl" href="javascript:void(0)"><span id="donga"></span></a>')
							('<a class="fl" href="javascript:void(0)"><span id="techcom"></span></a>')
							('<a class="fl" href="javascript:void(0)"><span id="vietin"></span></a>')
							('<a class="fl" href="javascript:void(0)"><span id="vib"></span></a>')
							('<a class="fl" href="javascript:void(0)"><span id="hd"></span></a>')
							('<div class="c"></div>')
							('<div class="mTop10">')
								('<a class="fl" href="javascript:void(0)"><span id="tp"></span></a>')
								('<a class="fl" href="javascript:void(0)"><span id="shb"></span></a>')
								('<a class="fl" href="javascript:void(0)"><span id="exim"></span></a>')
								('<a class="fl" href="javascript:void(0)"><span id="mari"></span></a>')
								('<a class="fl" href="javascript:void(0)"><span id="vieta"></span></a>')
								('<div class="c"></div>')
							('</div>')
						('</div>')
					('</div>')
					('<div class="c"></div>')
					('<ul class="paymentText paymentGuide'+(type=='atmOnline' ? '' : ' hidden')+'">')
						('<li>Không mất phí thanh toán</li>')
						('<li>Thẻ của Quý khách phải được kích hoạt chức năng thanh toán trực tuyến hoặc đã đăng ký Internet Banking</li>')
						('<li>Thanh toán nhanh gọn và có thể sử dụng dịch vụ ngay sau khi thanh toán.</li>')
					('</ul>')
				('</div>')
			('</div>')(),
			mcard = shop.join
			('<div class="paymentChooseType sendGold'+(type=='mcard'?' pay_active clicked':'')+'" id="mcard">')
				('<div class="arrowRight">')
					('<div class="radioBox"><input type="radio" name="radio_pay" id="radio_mcard" value="mcard" '+(type=='mcard'?'checked':'')+' /></div>')
					('<div class="paymentContent">')
						('<div class="paymentTitle">Thanh toán bằng Ví MuaChung '+title_gold+'</div>')
						('<div class="paymentText">Dùng tiền có trong Ví MuaChung để thanh toán. Quý khách có thể <a onclick="shop.gold.rechargeStep1(false,false,true)" href="javascript:void(0)">nạp vào Ví</a> để mua hàng được nhanh chóng và dễ dàng hơn.</div>')
						//('<div class="bankPay">')
						//	('<a class="fl" href="javascript:void(0)"><span id="mobiphone"></span></a>')
						//	('<a class="fl" href="javascript:void(0)"><span id="vinaphone"></span></a>')
						//	('<div class="c"></div>')
						//('</div>')
					('</div>')
					('<div class="c"></div>')
					('<ul class="paymentText paymentGuide'+((type=='mcard'&&shop.cart.isGOLD()) ? '' : ' hidden')+'">')
						('<li>Tiền trong Ví MuaChung có được do Quý khách đã mua sản phẩm trước đó hoặc sử dụng chức năng loan tin.</li>')
						//('<li>Quý khách có thể <a onclick="shop.gold.rechargeStep1(false,\'card\')" href="javascript:void(0)">nạp tiền vào Ví bằng thẻ cào điện thoại</a>. Nạp thẻ sẽ bị trừ '+(100-shop.cart.conf.card_rate*100)+'% phí (VD thẻ cào 100.000đ sẽ được '+shop.numberFormat(shop.cart.conf.card_rate*100000,'','','.')+' đ)</li>')
						('<li>Quý khách có thể nhờ người khác <a onclick="shop.gold.rechargeStep1(true)" href="javascript:void(0)">nạp hộ tiền</a> vào Ví của Quý khách bằng chức năng <a onclick="shop.gold.rechargeStep1()" href="javascript:void(0)">Nạp Tiền</a> trong trang cá nhân.</li>')
					('</ul>')
				('</div>')
			('</div>')(),
			cod = shop.join
			('<div class="paymentChooseType sendCod'+(type=='cod'?' pay_active clicked':'')+(shop.cart.conf.loto?' codNoActive':'')+'" id="cod">')
				('<div class="arrowRight pBottom10">')
					('<div class="radioBox"><input type="radio" name="radio_pay" id="radio_cod" value="cod" '+(type=='cod'?'checked':'')+' /></div>')
					('<div class="paymentContent">')
						('<div class="paymentTitle">Giao phiếu/Sản phẩm và Thu tiền tận nơi '+cod_title+'</div>')
						('<div class="paymentText">Trong thời gian từ 2-7 ngày làm việc, nhân viên MuaChung sẽ giao phiếu đến tận nơi cho Quý khách và thu tiền.</div>')
					('</div>')
					('<div class="c"></div>')
					('<ul class="paymentText paymentGuide'+((type=='cod' && shop.cart.isCOD()) ? '' : ' hidden')+'">')
						('<li>Quý khách có thể bị mất phí khi chọn hình thức này.</li>')
						('<li>Nhân viên giao phiếu của MuaChung sẽ liên hệ với Quý khách trước khi giao</li>')
						('<li>Quý khách chỉ được sử dụng dịch vụ sau khi đã thanh toán tiền cho nhân viên giao phiếu.</li>')
					('</ul>')
				('</div>')
			('</div>')(),
			payment = visaCard + atmOnline + mcard + cod;
			var btBack = '';
			if(item_id > 0 && shop.cart.isMultiPrice(item_id)){
				btBack = '<a href="javascript:void(0)" onclick="shop.cart.showExtra('+item_id+', shop.cart.conf.extra['+item_id+'])" id="fr" class="blueButton mRight20"><span><span><b>&laquo;</b> QUAY LẠI</span></span></a>';
			}
			return shop.popupSite(id, title, shop.join
			('<div class="content" style="padding:0 0 10px">'+payment)
				('<div class="c"></div>')
				('<div align="center" class="mRight20 mTop10">')
					('<a href="javascript:void(0)" onclick="shop.cart.processStepZero()" class="blueButton" id="fr"><span><span>TIẾP TỤC <b>&raquo;</b></span></span></a>'+btBack)
					('<div class="c"></div>')
				('</div>')
			('</div>')());
		},
		register:function(id, title){
			var fname = shop.join
			('<div class="newCustomerInfo">')
				('<div class="input">Họ tên: ')
					('<input type="text" style="width:210px" id="cart_fullname" name="fullname" value="'+shop.cart.conf.user.fullname+'" />')
				('</div>')
				('<div class="description">Vui lòng cho chúng tôi biết Họ tên của Quý khách, Thông tin này sẽ được hiển thị ra ngoài Danh sách</div>')
			('</div>')(),
			email = shop.join
			('<div class="newCustomerInfo mTop5">')
				('<div class="input">Email: ')
					('<input type="text" style="width:218px" id="cart_email" name="email" value="'+shop.cart.conf.user.email+'" />')
				('</div>')
				('<div class="description">Vui lòng nhập chính xác địa chỉ email để nhận được thông báo mua hàng</div>')
			('</div>')(),
			mobile_phone = shop.join
			('<div class="newCustomerInfo mTop5">')
				('<div class="input">Điện thoại di động: ')
					('<input type="text" style="width:121px" id="cart_tel" name="tel" value="'+shop.cart.conf.user.mobile_phone+'" maxlength="20" onkeypress="return shop.numberOnly(this, event)" />')
				('</div>')
				('<div class="description">Vui lòng nhập đúng số điện thoại di động để nhận mã số phiếu qua tin nhắn SMS</div>')
			('</div>')(),
			notice = '',
			shipping = '',
			limit = 1,
			allPrice = '',
			price = parseInt(shop.cart.conf.cart.cart.price),
			quantity = shop.join
			('<div id="formQuantity" class="jNice">')
				('<div class="newLabel">Số lượng Quý khách cần mua:</div>')
				('<div class="mTop5">')
					('<select style="width: 70px" id="quantity" name="select" onchange="shop.cart.theme.newOtp(this.value)">')();
			if(!shop.is_exists(shop.cart.conf.cart.numberOtp)){
				shop.cart.conf.cart.numberOtp = parseInt(shop.cart.conf.cart.cart.min_order);
			}
			for(var i = parseInt(shop.cart.conf.cart.cart.min_order);i<=shop.cart.conf.cart.cart.max_order;i++){
				quantity += '<option value="'+i+'"'+(shop.cart.conf.cart.numberOtp == i ? ' selected':'')+'>'+i+'</option>';
			}
			quantity += shop.join
					('</select>')
				('</div>')
				('<div class="xprice">')
					('x '+shop.cart.theme.numberFormat(price)+' đ = <span id="numPrice">'+shop.cart.theme.numberFormat(price*shop.cart.conf.cart.numberOtp)+' đ</span>')
				('</div>')
			('</div>')();

			allPrice = price*shop.cart.conf.cart.numberOtp;
			if(shop.cart.conf.shipping.check){
				allPrice += shop.cart.conf.cart.numberOtp* shop.cart.conf.shipping.fee;
			}
			allPrice = shop.join
			('<div class="mTop15">')
				('<div class="bgAllPrice" align="right">Tổng tiền: <span style="color:red"><span id="bgAllPrice">'+shop.cart.theme.numberFormat(allPrice)+'</span> đ</span></div>')
			('</div>')();

			//notice
			if(shop.cart.conf.shipping.active){
				notice = '<div class="newCartNotice mTop10">'+shop.cart.conf.shipping.note+'</div>'+allPrice;
				shipping = shop.join
				('<div class="mTop20" onmouseup="shop.cart.labelMe.mouseDIV.up()" onmousedown="shop.cart.labelMe.mouseDIV.down(this, false, shop.cart.checkPrice)">')
					('<input style="float:left" onmousedown="shop.cart.labelMe.mouseCheckboxDown()" onclick="shop.cart.theme.newPrice(this)" type="checkbox" class="checkbox" id="shipping-check" '+(shop.cart.conf.shipping.check?'checked':'')+'/>')
					('<div class="infoInputCheck" style="float:left">')
						('Giao hàng tận nơi <span style="color:#f60000">('+(shop.cart.conf.shipping.fee > 0 ? ('Phí <span id="feePrice">'+ shop.cart.theme.numberFormat(shop.cart.conf.shipping.fee * shop.cart.conf.cart.numberOtp) +'đ</span>') : 'Miễn phí')+')</span>')
					('</div><div class="c"></div>')
				('</div>')();
			}else{
				notice = allPrice;
			}
			
			if(fname != '' || email != '' || mobile_phone != ''){
				var customerInfo = '', moreInfo = '';
				if(shop.cart.conf.user.type == 'customer'){
					customerInfo = shop.join
					('<div class="newLabel"><input type="radio" id="radio_info1" class="radio_info" value="1" '+(shop.cart.conf.userInfo == 1?'checked':'')+' onclick="shop.cart.showUserInfo(1)" /> <span onclick="shop.cart.showUserInfo(1)">Sử dụng thông tin cá nhân</span></div>')
					('<div class="customerInfoC'+(shop.cart.conf.userInfo == 0 ? ' hidden' : '')+'">')
						('<div class="infoInputText f11 mTop0">(Muachung sẽ dùng các thông tin bên dưới để gửi thông tin hóa đơn mua hàng cho Quý khách)</div>')
						('<div style="background:#fff;border:3px solid #D9F2FB;padding:10px;width:270px;overflow:hidden;color:#000">')
							('<div><b style="color:#0A9CCA">Họ tên:</b> '+shop.cart.conf.customer.fullname+'</div>')
							('<div class="mTop5"><b style="color:#0A9CCA">Điện thoại:</b> '+shop.cart.conf.customer.mobile_phone+'</div>')
							('<div class="mTop5"><b style="color:#0A9CCA">Email:</b> '+shop.cart.conf.customer.email+'</div>')
						('</div>')
					('</div>')
					('<div class="newLabel mTop5"><input type="radio" id="radio_info0" class="radio_info" value="0" '+(shop.cart.conf.userInfo == 0?'checked':'')+' onclick="shop.cart.showUserInfo(0)" /> <span onclick="shop.cart.showUserInfo(0)">Dùng thông tin khác</span></div>')
					('<div class="guestInfo mTop5'+(shop.cart.conf.userInfo == 1 ? ' hidden' : '')+'">'+fname+email+mobile_phone+'<div class="c"></div></div>')();
				}else{
					customerInfo = '<div class="guestInfo">'+fname+email+mobile_phone+'<div class="c"></div></div>';
					moreInfo = '<div class="bgCartInfo">Hãy <a href="javascript:void(0)" onclick="shop.customer.login.show()">Đăng nhập</a> hoặc <a href="javascript:void(0)" onclick="shop.customer.register.show()">Đăng ký</a> khi mua hàng trên Muachung để được tặng tiền vào Ví tích lũy dùng mua hàng, quay số trúng thưởng.</div>';
				}
				return shop.popupSite(id, title, shop.join
				(moreInfo+'<div class="content">')
					('<div class="reg_cart_form">')
						('<form name="cartRegisterForm" id="cartRegisterForm">')
							('<div class="cartNewForm">')
								('<div id="cError"></div>')
								('<div class="infoInputLeft">'+customerInfo+'</div>')
								('<div class="infoInputRight">'+quantity+shipping+notice+'</div>')
								('<div class="c"></div>')
							('</div>')
						('</form>')
						('<div class="mTop10">')
							('<a href="javascript:void(0)" onclick="shop.cart.processStepOne()" class="blueButton mLeft10" id="fr"><span><span>TIẾP TỤC <b>&raquo;</b></span></span></a>')
							('<a href="javascript:void(0)" onclick="shop.cart.stepZero()" class="blueButton" id="fr"><span><span><b>&laquo;</b> QUAY LẠI</span></span></a>')
							('<div class="c"></div>')
						('</div>')
						('<div class="c"></div>')
					('</div>')
				('</div>')());
			}
			return '';
		},
		moreInfo:function(id, title, def){
			var more = '',
			cityList = '<select name="city" id="cart_city" style="width:150px;padding:4px" onchange="shop.district.loadDistrictDropdown(this.value, \'listDistrict\', false, \''+def+'\')">';

			cityList+= '<option value="0">--- Chọn ---</option>';
			for(var i in city_list){
				cityList += '<option value="'+city_list[i].id+'"'+(shop.cart.conf.user.city==i?' selected':'')+'>'+city_list[i].title+'</option>';
			}
			cityList += '</select>';

			more = shop.join
			('<div align="left">Vui lòng cho MuaChung biết chi tiết <b>địa chỉ Quý khách sẽ dùng để nhận hàng</b> để MuaChung gửi hàng được nhanh và chính xác nhất</div>')
			('<div id="cError"></div>')
			('<div align="left">')
				('<div id="pTop5" class="newCustomerInfo mTop5">')
					('<div class="input fl mTop5" style="width:100px">Số nhà: </div>')
					('<input type="text" id="cart_address" name="address" class="fl mTop5" style="width:235px" value="'+shop.cart.conf.user.address+'" />')
					('<div class="c"></div>')
					('<div class="input fl mTop5" style="width:100px">Đường/Phố: </div>')
					('<input type="text" id="cart_street" name="street" class="fl mTop5" style="width:235px" value="'+(shop.cart.conf.user.street ? shop.cart.conf.user.street : '')+'" />')
					('<div class="c"></div>')
					('<div class="input fl mTop5" style="width:100px">Phường/Xã: </div>')
					('<input type="text" id="cart_ward" name="ward" class="fl mTop5" style="width:235px" value="'+(shop.cart.conf.user.ward ? shop.cart.conf.user.ward : '')+'" />')
					('<div class="c"></div>')
				('</div>')
				('<div class="mTop5">')
					('<div id="pTop5" class="newCustomerInfo fl">')
						('<div class="input">Tỉnh/Thành phố:</div>')
						('<div>'+cityList+'</div>')
					('</div>')
					('<div id="pTop5" class="newCustomerInfo fr">')
						('<div class="input">Quận/Huyện:</div>')
						('<div>')
							('<select id="listDistrict" name="district" style="width:150px"></select>')
						('</div>')
					('</div>')
					('<div class="c"></div>')
				('</div>')
				('<div id="pTop5" class="newCustomerInfo mTop5">')
					('<div class="input">Thời giao hàng, Ghi chú thêm:</div>')
					('<textarea id="cart_note" name="note" style="width:330px">'+shop.cart.conf.user.note+'</textarea>')
					('<div class="description">Vui lòng cho Muachung biết thời gian Quý khách có thể nhận hàng hoặc các yêu cầu thêm nếu có (Lưu ý: Muachung không giao hàng vào buổi tối)</div>')
				('</div>')
			('</div>')();

			if(shop.cart.conf.user.type == 'customer' && shop.cart.conf.customer.address != '' && shop.cart.conf.customer.ward != '' && shop.cart.conf.customer.street != '' && shop.cart.conf.customer.district != '' && shop.cart.conf.customer.city > 0 && shop.is_exists(city_list[shop.cart.conf.customer.city])){
				more = shop.join
				('<div class="newLabel">')
					('<input type="radio" id="radio_address1" class="radio_address" value="1" '+(shop.cart.conf.userAddress == 1?'checked':'')+' onclick="shop.cart.showUserAddress(1)" />')
					('<span onclick="shop.cart.showUserAddress(1)">Sử dụng thông tin cá nhân</span>')
				('</div>')
				
				('<div class="customerAddressC'+(shop.cart.conf.userAddress == 0 ? ' hidden' : '')+'">')
					('<div class="infoInputText f11 mTop0" style="width:355px">(Muachung sẽ dùng các thông tin bên dưới để gửi hàng cho Quý khách)</div>')
					('<div style="background:#fff;border:3px solid #D9F2FB;padding:10px;width:330px;overflow:hidden;color:#000">')
						('<div><b style="color:#0A9CCA">Số nhà:</b> '+shop.cart.conf.customer.address+'</div>')
						('<div class="mTop5"><b style="color:#0A9CCA">Đường/Phố:</b> '+shop.cart.conf.customer.street+'</div>')
						('<div class="mTop5"><b style="color:#0A9CCA">Phường/Xã:</b> '+shop.cart.conf.customer.ward+'</div>')
						('<div class="mTop5"><b style="color:#0A9CCA">Quận/Huyện:</b> '+shop.cart.conf.customer.district+'</div>')
						('<div class="mTop5"><b style="color:#0A9CCA">Tỉnh/Thành phố:</b> '+city_list[shop.cart.conf.customer.city].title+'</div>')
					('</div>')
					('<div id="pTop5" class="newCustomerInfo mTop5">')
						('<div class="input">Thời giao hàng, Ghi chú thêm:</div>')
						('<textarea id="cart_note2" name="note" style="width:330px">'+shop.cart.conf.user.note+'</textarea>')
						('<div class="description">Vui lòng cho Muachung biết thời gian Quý khách có thể nhận hàng hoặc các yêu cầu thêm nếu có (Lưu ý: Muachung không giao hàng vào buổi tối)</div>')
					('</div>')
				('</div>')
				('<div class="newLabel mTop5">')
					('<input type="radio" id="radio_address0" class="radio_address" value="0" '+(shop.cart.conf.userAddress == 0?'checked':'')+' onclick="shop.cart.showUserAddress(0)" />')
					('<span onclick="shop.cart.showUserAddress(0)">Dùng thông tin khác</span>')
				('</div>')
				('<div class="guestAddress mTop5'+(shop.cart.conf.userAddress == 1 ? ' hidden' : '')+'">'+more+'<div class="c"></div></div>')();
			}else{
				shop.cart.conf.userAddress = 0;
			}

			return shop.popupSite(id, title, shop.join
			('<div class="content cartMoreAddress" style="padding:10px 20px">')
				('<form name="cartAddressForm" id="cartAddressForm">')
					(more+'<div align="center" class="mTop10">')
						('<a href="javascript:void(0)" onclick="shop.cart.processStepTwo()" class="blueButton  mLeft10" id="fr"><span><span>TIẾP TỤC <b>&raquo;</b></span></span></a>')
						('<a href="javascript:void(0)" onclick="shop.cart.stepOne()" id="fr" class="blueButton"><span><span><b>&laquo;</b> QUAY LẠI</span></span></a>')
						('<div class="c"></div>')
					('</div>')
				('</form>')
			('</div>')());
		},
		confirmProduct:function(id, title){
			var paymentViSa = '', data = shop.cart.conf.cart.cart, note='', t='', logo='', bt_checkout='ĐẶT HÀNG';
			if(shop.cart.conf.cart.payment == 1){
				t = "Thanh toán Online";
				logo = '<a href="https://muachungpay.vn/" target="_blank" title="muachungpay.vn"><img src="style/images/logo/muachungpay.png" width="278" height="48" border="0" /></a>';
				note = shop.join
				('<div class="mLeft25" style="width:410px">')
					('<div>')
						('<div><strong style="color:red">Chú ý:</strong> Quý khách phải có <b>thẻ Visa/Master</b> đã kích hoạt thanh toán online</div>')
						('<div class="mTop5">hoặc <b>thẻ ATM đã đăng kí sử dụng internet banking</b> với ngân hàng phát hành thẻ</div>')
					('</div>')
					('<div class="mTop10">Thanh toán Online được đảm bảo bởi <a href="https://muachungpay.vn/" target="_blank" title="muachungpay.vn">MuaChungPay</a></div>')
				('</div>')();
				bt_checkout='THANH TOÁN';
			}else if(shop.cart.conf.cart.payment == 2){
				var moreGold = '', suggest = '';
				if(shop.cart.conf.customer.gold < shop.cart.conf.cart.total){
					moreGold = shop.cart.conf.cart.total - shop.cart.conf.customer.gold;
					var need = shop.cart.cardSuggest(moreGold);
					if(need){
						suggest = '<div class="title">Gợi ý nạp thẻ:</div>';
						for(var i in need){
							suggest += '<div class="mTop5 mLeft25">- <b style="color:red">'+need[i]+'</b> thẻ mệnh giá <span style="color:blue">'+shop.cart.theme.numberFormat(i,0,'','.')+'</span> đ (~<span style="color:blue">'+shop.cart.theme.numberFormat(need[i]*i*shop.cart.conf.card_rate,0,'','.')+'</span> đ)</div>';
						}
						suggest = '<div class="mTop10">'+suggest+'<div class="mTop5 mLeft25">- <span style="color:red">Số tiền thừa sẽ được cộng lại vào Ví của Quý khách</span></div></div>';
					}
					moreGold = shop.cart.theme.numberFormat(moreGold, 0, '', '.');
					moreGold = 'Quý khách phải nạp thêm: <b style="color:red">'+moreGold+'</b> đ';
					//bt_checkout = 'NẠP THẺ';
					bt_checkout = '';
				}else{
					moreGold = shop.cart.conf.customer.gold-shop.cart.conf.cart.total;
					moreGold = shop.cart.theme.numberFormat(moreGold, 0, '', '.');
					moreGold = 'Sau khi thanh toán Quý khách còn: <b style="color:red">'+moreGold+'</b> đ';
					bt_checkout = 'THANH TOÁN';
				}
				t = "Thanh toán bằng Ví MuaChung ";//hoặc Thẻ cào Vinaphone và MobiFone";
				logo = '';
				note = shop.join
				('<div class="mLeft25" style="width:720px">')
					('<div>- Hiện tại của Quý khách đang có: <b>'+shop.cart.theme.numberFormat(shop.cart.conf.customer.gold, 0, '', '.')+'</b> đ</div>')
					('<div class="mTop5">- Đơn hàng này có giá trị tương ứng với: <b>'+shop.cart.theme.numberFormat(shop.cart.conf.cart.total, 0, '', '.')+'</b> đ</div>')
					('<div class="mTop5 mBottom10">- '+moreGold+'</div>'+(suggest != '' ? '<a href="javascript:void(0)" onclick="shop.gold.rechargeStep1()" id="fl" class="blueButton"><span><span>NẠP TIỀN</span></span></a><div class="c"></div>' : ''))
				('</div>')();
				//('</div>'+suggest)();
			}else if(shop.cart.conf.cart.payment_id == 'cod'){
				t = "Nộp tiền & nhận hàng tận nơi";
				logo = '';
				note = '';
			}

			var shipping_fee = shop.cart.conf.shipping.fee,
			shipping_fee_f = shop.cart.conf.shipping.fee_f,
			ship = '';
			if((shop.cart.conf.shipping.active || shop.cart.conf.shipping.COD) && shop.cart.conf.shipping.check && shipping_fee > 0){
				ship = shop.join
				('<tr>')
					('<td valign="top" align="center" class="item bRight">2</td>')
					('<td valign="top" class="item bRight" colspan="2">Phí giao tận nơi</td>')
					('<td valign="top" align="right" class="item bRight">'+shipping_fee_f+'</td>')
					('<td valign="top" align="center" class="item bRight">'+shop.cart.conf.cart.numberOtp+'</td>')
					('<td valign="top" align="right" class="item">'+data.shipping_fee_f+'</td>')
				('</tr>')();
			}

			var regulations = shop.cart.conf.user.type == 'guest' ? shop.join
			('<div class="mTop10" style="font-size:16px;width:758px">')
				('<input type="checkbox" id="check-regulations" class="checkbox" checked />')
				('<label for="check-regulations">')
					('<strong>Tôi đã đọc và đồng ý với các <a href="trang-the-le.html" target="_blank">điều khoản</a> và <a href="trang-quy-dinh-refund.html"  target="_blank">quy định</a> của MuaChung.vn</strong>')
				('</label>')
			('</div>')() : '';
			var address = '',
			back = '<a href="javascript:void(0)" onclick="shop.cart.stepOne()" class="blueButton" id="fr"><span><span>SỬA THÔNG TIN CÁ NHÂN</span></span></a>';
			if((shop.cart.conf.province == 0) || (shop.cart.conf.cart.payment_id == 'cod') || (shop.cart.conf.shipping.check && shop.cart.conf.shipping.active)){
				address = '<div class="mTop5"><strong>Địa chỉ nhận hàng:</strong> <span class="cff9200">'+shop.cart.conf.user.address+' ('+shop.cart.conf.user.street+'/'+shop.cart.conf.user.ward+'/'+shop.cart.conf.user.district+'/'+city_list[shop.cart.conf.user.city].title+')'+'</span>';
				if(shop.cart.conf.user.note!=''){
					address+= '</div><div class="mTop5"><strong>Ghi chú nhận hàng:</strong> <span class="cff9200">'+shop.cart.conf.user.note+'</span>';
				}
				address += back+'</div>';
			}else{
				address = back;
			}
			if(shop.cart.isMultiPrice(shop.cart.conf.cart.cart.id) && shop.is_exists(data.extra)){
				data.title += ' ('+shop.cart.conf.extra[shop.cart.conf.cart.cart.id][data.extra].price_title+')';
			}
			return shop.popupSite(id, title, shop.join
			('<div class="content" style="padding:10px 20px">')
				('<div class="box-gradien pBottom10 pTop15" style="*width:713px">')
					('<div class="title">Thông tin khách hàng</div>')
					('<div class="content" id="pTop10">')
						('<div><strong>Họ tên:</strong> <span class="cff9200">'+shop.cart.conf.user.fullname+'</span></div>')
						('<div class="mTop5"><strong>Email:</strong> <span class="cff9200">'+shop.cart.conf.user.email+'</span></div>')
						('<div class="mTop5"><strong>Điện thoại di động:</strong> <span class="cff9200">'+shop.cart.conf.user.mobile_phone+'</span></div>')
						(address+'<div class="c"></div>')
					('</div>')
				('</div>')
				('<div class="box-gradien pBottom10 pTop15 mTop10">')
					('<div class="title">Hình thức thanh toán: <span style="font-size:12px;font-weight:normal;text-transform:none">'+t+'</span></div>')
					('<div class="content">')
						('<div class="fl">'+logo+'</div>')
						('<div class="fl">'+note+'</div>')
						('<div class="c"></div>')
					('</div>')
				('</div>')
				('<div class="box-gradien mTop10" id="box-gradien2">')
					('<div class="title mTop10 mLeft10">Thông tin sản phẩm</div>')
					('<div class="content" id="pTop5">')
						('<table class="cart-finish" cellpadding="0" cellspacing="0" width="100%" border="0">')
						('<thead><tr>')
							('<th class="head bRight" width="25">STT</th>')
							('<th class="head bRight">Sản phẩm</th>')
							('<th class="head bRight" width="70">Đơn vị</th>')
							('<th class="head bRight" width="80">Đơn Giá</th>')
							('<th class="head bRight" width="25">SL</th>')
							('<th class="head" width="80">Thành Tiền</th>')
						('</tr></thead>')
						('<tr>')
							('<td valign="top" align="center" class="item bRight">1</td>')
							('<td valign="top" class="item bRight">'+data.title+'</td>')
							('<td valign="top" align="center" class="item bRight">'+data.code+'</td>')
							('<td valign="top" align="right" class="item bRight">'+data.price_f+'</td>')
							('<td valign="top" align="center" class="item bRight">'+shop.cart.conf.cart.numberOtp+'</td>')
							('<td valign="top" align="right" class="item">'+data.price_total_f+'</td>')
						('</tr>')
						(ship+'<tr>')
							('<td align="right" class="item total-all" colspan="6">'+ (data.total < data.price ? 'Tiền đặt cọc' : 'Tổng tiền') +' = <span id="total-all">'+shop.cart.conf.cart.total_price+'</span></td>')
						('</tr></table>')
					('</div>')
				('</div>'+regulations)
				('<div align="center" class="mTop10">'+(bt_checkout != '' ? '<a href="javascript:void(0)" onclick="shop.cart.processStepThree()" class="blueButton  mLeft10" id="fr"><span><span>'+bt_checkout+'</span></span></a>' : ''))
					('<a href="javascript:void(0)" onclick="shop.cart.stepTwo(true)" id="fr" class="blueButton"><span><span><b>&laquo;</b> QUAY LẠI</span></span></a>')
					('<div class="c"></div>')
				('</div>')
			('</div>')());
		},
		finish:function(id, title){
			return shop.popupSite(id, title, shop.join
			('<div class="content" style="padding:15px 20px 25px;font-size:18px" align="center">')
				('<b>Hệ thống đang cập nhật đơn hàng... </b><br /><br />')
				('Quý khách vui lòng <b style="color:red">không tắt trình duyệt</b>')
			('</div>')());
		},
		paymentViSa:function(){
			return shop.join
			('<form id="checkoutSoHa" method="post" action="'+shop.cart.conf.cart.url+'">')
				('<input type="hidden" value="'+shop.cart.conf.cart.quantity+'" name="quantity" />')
				('<input type="hidden" value="'+shop.cart.conf.cart.order_id+'" name="id" />')
				('<input type="hidden" value="'+shop.cart.conf.cart.total+'" name="total" />')
				('<input type="hidden" value="'+shop.cart.conf.cart.good_name+'" name="good" />')
				('<input type="hidden" value="'+shop.cart.conf.cart.item_ids+'" name="item_ids" />')
				('<input type="hidden" value="'+shop.cart.conf.user.fullname+'" name="fullname" />')
				('<input type="hidden" value="'+shop.cart.conf.user.mobile_phone+'" maxlength="50" name="mobiphone" />')
				('<input type="hidden" value="'+shop.cart.conf.user.email+'" maxlength="50" name="email" />')
				('<input type="hidden" value="'+shop.cart.conf.user.id+'" maxlength="50" name="uid" />')
			('</form>')();
		},
		newPrice:function(obj){
			var checked = false, price = parseInt(shop.cart.conf.cart.cart.price);
			if(obj && obj.checked == true){
				shop.cart.conf.cart.priceAndShip = shop.cart.conf.cart.numberOtp*(price+parseInt(shop.cart.conf.cart.cart.fee_shipping));
				checked = true;
			}
			if(checked == false){
				shop.cart.conf.cart.priceAndShip = shop.cart.conf.cart.numberOtp*price;
			}
			if(shop.cart.conf.cart.payment_id == 'cod'){
				shop.cart.conf.shipping.codShipType = checked ? 'product' : 'card';
			}
			shop.cart.conf.shipping.check = checked;
			jQuery('#bgAllPrice').html(shop.cart.theme.numberFormat(shop.cart.conf.cart.priceAndShip));
		},
		newOtp:function(number){
			shop.cart.conf.cart.numberOtp = number;
			var limit = 1, price = parseInt(shop.cart.conf.cart.cart.price);
			
			//doi gia tien
			if(shop.cart.conf.shipping.fee > 0){
				jQuery('#feePrice').html(shop.cart.theme.numberFormat(number*shop.cart.conf.shipping.fee)+' đ');
			}
			jQuery('#numPrice').html(shop.cart.theme.numberFormat(number*price)+" đ");
			shop.cart.theme.newPrice(document.getElementById('shipping-check'));
		},
		numberFormat:function( number, decimals, dec_point, thousands_sep ){
			var n = number, prec = decimals;
			n = !isFinite(+n) ? 0 : +n;
			prec = !isFinite(+prec) ? 0 : Math.abs(prec);
			var sep = (typeof thousands_sep == "undefined") ? '.' : thousands_sep;
			var dec = (typeof dec_point == "undefined") ? ',' : dec_point;
			var s = (prec > 0) ? n.toFixed(prec) : Math.round(n).toFixed(prec); //fix for IE parseFloat(0.55).toFixed(0) = 0;
			var abs = Math.abs(n).toFixed(prec);
			var _, i;
			if (abs >= 1000) {
				_ = abs.split(/\D/);
				i = _[0].length % 3 || 3;
				_[0] = s.slice(0,i + (n < 0)) +
					  _[0].slice(i).replace(/(\d{3})/g, sep+'$1');
				s = _.join(dec);
			} else {
				s = s.replace(',', dec);
			}
			return s;
		},
		systemAlert:function(msg, title){
			var key = shop.get_uuid();
			title = title ? title : 'Thông báo từ hệ thống';
			shop._active_popup(key, "", "",
			{
				type: "overlay",
				auto_hide: 8900,
				overlay : {
					'opacity' : 0.3,
					'background-color' : '#000'
				}
			});
			shop._active_popup('system-alert',title,
			shop.popupSite('system-alert',title,shop.join
			('<div class="content" style="padding:20px">')
					('<div class="box-gradien" id="site-regulations" style="padding:20px 10px;width:435px;overflow:hidden">'+msg+'</div>')
			('</div>')(), key),
			{
				type: 'one-time',
				auto_hide: 9000,
				background: {
					'background-color' : 'transparent'
				},
				border: {
					'background-color' : 'transparent',
					'padding' : '0px'
				},
				title: {
					'display' : 'none'
				},
				content: {
					'padding' : '0px',
					'width' : '500px'
				}
			});
		}
	},

// ------------------------------------- extra function --------------------------------- //
	labelMe:{
		mousedown: false,
		mouseDIV:{
			over: function(obj){jQuery(obj).addClass('over-bg')},
			out:  function(obj){jQuery(obj).removeClass('over-bg')},
			down: function(obj, ckb, cb){
				ckb = ckb ? ckb : '.checkbox';
				if(!shop.cart.labelMe.mousedown){
					var check = jQuery(ckb, obj).attr("checked");
					jQuery(ckb, obj).attr("checked", !check);
					if(cb) cb();
				}
			},
			up: function(){shop.cart.labelMe.mousedown = false}
		},
		mouseCheckboxDown: function(){shop.cart.labelMe.mousedown = true}
	},
	checkPrice: function(){
		var obj = shop.get_ele('shipping-check');
		shop.cart.theme.newPrice(obj);
	},
	showUserInfo:function(id){
		if(id == 0 || id == 1){
			if(id != shop.cart.conf.userInfo){
				shop.cart.conf.userInfo = id;
				jQuery('.radio_info').each(function(){
					if(this.id == 'radio_info'+id){
						this.checked = true;
					}else{
						this.checked = false;
					}
				});
				if(id == 1){
					jQuery('.guestInfo').hide();
					jQuery('.customerInfoC').show();
				}else{
					jQuery('.guestInfo').show();
					jQuery('.customerInfoC').hide();
				}
			}
		}
	},
	showUserAddress:function(id){
		id = parseInt(id);
		if(id == 0 || id == 1){
			if(id != shop.cart.conf.userAddress){
				shop.cart.conf.userAddress = id;
				jQuery('.radio_address').each(function(){
					if(this.id == 'radio_address'+id){
						this.checked = true;
					}else{
						this.checked = false;
					}
				});
				if(id == 1){
					jQuery('.guestAddress').hide();
					jQuery('.customerAddressC').show();
				}else{
					jQuery('.guestAddress').show();
					jQuery('.customerAddressC').hide();
				}
			}
		}
	},
	chooseTelco:function(obj, type){shop.get_ele('r_'+type).checked = true},
	showOnlineBank:function(){
		if(jQuery('.view_more_bank').hasClass('hidden')){
			jQuery('.view_more_bank').slideDown().removeClass('hidden');
		}else{
			jQuery('.view_more_bank').slideUp().addClass('hidden');
		}
	},
	choosePayment:function(obj, checked){
		if(!jQuery(obj).hasClass(obj.id+'NoActive')){
			if(shop.cart.conf.user.type == 'guest' && obj.id == 'mcard'){
				shop.get_ele('radio_'+obj.id).checked = false;
				if(confirm('Quý khách phải đăng nhập để tiếp tục mua hàng bằng Ví MuaChung\nQuý khách sẽ Đăng Nhập luôn ?')){
					shop.customer.login.show();
				}
			}else{
				//kich hoat
				jQuery('.pay_active').removeClass('pay_active').removeClass('clicked');
				jQuery(obj).addClass('pay_active clicked');
				//khoi tao lai chieu cao
				if(obj.id == 'atm'){
					jQuery('.bank').slideDown();
				}else{
					jQuery('.bank').slideUp();
				}
				//select radio
				shop.get_ele('radio_'+obj.id).checked = true;
				jQuery('.paymentGuide').hide();
				jQuery('.paymentGuide', obj).show();
			}
		}else{
			shop.get_ele('radio_'+obj.id).checked = false;
			var id = jQuery('.clicked').attr('id');
			if(id){
				shop.get_ele('radio_'+id).checked = true;
			}
		}
	},
	isCOD:function(){ return shop.cart.conf.shipping.COD},
	isGOLD:function(){ return shop.cart.conf.user.type == 'customer' },
	isMultiPrice:function(id){
		return shop.is_exists(shop.cart.conf.extra[id]) && shop.cart.conf.extra[id].length > 1;
	},
	showTip:function(obj){
		jQuery('.tipc', jQuery(obj).parent()).show();
	},
	hideTip:function(obj){
		jQuery('.tipc', jQuery(obj).parent()).hide();
	},
	guest:{
		update:function(u){
			if(u){
				if(shop.is_exists(u.fullname) && u.fullname != ''){
					shop.cart.conf.user.fullname = u.fullname;
				}
				if(shop.is_exists(u.email) && u.email != ''){
					shop.cart.conf.user.email = u.email;
				}
				if(shop.is_exists(u.mobile_phone) && u.mobile_phone != ''){
					shop.cart.conf.user.mobile_phone = u.mobile_phone;
				}
				if(shop.is_exists(u.type) && (u.type == 'guest' || u.type == 'customer')){
					shop.cart.conf.user.type = u.type;
				}
				if(shop.is_exists(u.address) && u.address != ''){
					shop.cart.conf.user.address = u.address;
				}
				if(shop.is_exists(u.district) && u.district != ''){
					shop.cart.conf.user.district = u.district;
				}
				if(shop.is_exists(u.street) && u.street != ''){
					shop.cart.conf.user.street = u.street;
				}
				if(shop.is_exists(u.ward) && u.ward != ''){
					shop.cart.conf.user.ward = u.ward;
				}
				if(shop.is_exists(u.note) && u.note != ''){
					shop.cart.conf.user.note = u.note;
				}
				if(shop.is_exists(u.city) && u.city != ''){
					shop.cart.conf.user.city = u.city;
				}
			}
		},
		restore:function(){
			var u = {
				fullname : shop.cookie.get('guest_fullname'),
				email : shop.cookie.get('guest_email'),
				mobile_phone : shop.cookie.get('guest_mobile_phone'),
				address : shop.cookie.get('guest_address'),
				street : shop.cookie.get('guest_street'),
				ward : shop.cookie.get('guest_ward'),
				district : shop.cookie.get('guest_district'),
				city : shop.cookie.get('guest_city'),
				note : shop.cookie.get('guest_note')
			};
			shop.cart.guest.update(u);
		},
		save:function(u){
			if(u){
				var year = 86400*30*12;
				if(shop.is_exists(u.fullname)){
					shop.cookie.set('guest_fullname', u.fullname, year, '/');
				}
				if(shop.is_exists(u.email)){
					shop.cookie.set('guest_email', u.email, year, '/');
				}
				if(shop.is_exists(u.mobile_phone)){
					shop.cookie.set('guest_mobile_phone', u.mobile_phone, year, '/');
				}
				if(shop.is_exists(u.type)){
					shop.cart.conf.user.type = u.type;
				}
				if(shop.is_exists(u.address) && u.address != ''){
					shop.cookie.set('guest_address', u.address, year, '/');
				}
				if(shop.is_exists(u.street) && u.street != ''){
					shop.cookie.set('guest_street', u.street, year, '/');
				}
				if(shop.is_exists(u.ward) && u.ward != ''){
					shop.cookie.set('guest_ward', u.ward, year, '/');
				}
				if(shop.is_exists(u.district) && u.district != ''){
					shop.cookie.set('guest_district', u.district, year, '/');
				}
				if(shop.is_exists(u.note) && u.note != ''){
					shop.cookie.set('guest_note', u.note, year, '/');
				}
				if(shop.is_exists(u.city) && u.city != ''){
					shop.cookie.set('guest_city', u.city, year, '/');
				}
			}
		}
	},
	cardSuggest:function(number, bug){
		if(number > 0){
			var stop = 0, temp = 0, idx = 0, need = {}, i = 0;
			//cong them gold do triet khau
			number = Math.ceil(number/shop.cart.conf.card_rate);
			while(stop == 0){
				if(number < shop.cart.conf.card[0]){
					stop = 1;
					if(number > 0){
						if(shop.is_exists(need[shop.cart.conf.card[0]])){
							need[shop.cart.conf.card[0]]++;
						}else{
							need[shop.cart.conf.card[0]] = 1;
						}
					}
				}else{
					for(i=0;i<shop.cart.conf.card.length;i++){
						if((number < shop.cart.conf.card[i]) || (i == shop.cart.conf.card.length-1)){
							idx = i;
							if(number < shop.cart.conf.card[i]){
								idx = i-1;
							}
							if(number < shop.cart.conf.card[i] && number > shop.cart.conf.card[idx]){
								idx = i;
								number = 0;
								if(shop.is_exists(need[shop.cart.conf.card[idx]])){
									need[shop.cart.conf.card[idx]]++
								}else{
									need[shop.cart.conf.card[idx]] = 1;
								}
							}else{
								temp = Math.floor(number/shop.cart.conf.card[idx]);
								number = number - temp*shop.cart.conf.card[idx];
								need[shop.cart.conf.card[idx]] = temp;
							}
							break;
						}
					}
				}
			}
			if(bug){
				bug = '';
				for(i in need){
					bug += '<div class="mTop5 mLeft10">- <b>'+need[i]+'</b> thẻ mệnh giá <span style="color:red">'+shop.cart.theme.numberFormat(i,0,'','.')+'</span> đ</div>';
				}
				jQuery('body').prepend(bug);
			}
			return need;
		}
		return false;
	}
};